# -*- coding: utf-8 -*-
#===============================================================================
# Koro Business Environment
# Copyright (C) 2008  Antonio Corroppoli
#
#This file is part of Koro BE.
# 
# Koro BE is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
# 
# Koro BE is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with Koro BE; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
#===============================================================================

'''
Created on 02/nov/2011

@author: antstud
'''

import wx
from koro.modules.koroprint import PrintableCanvas, A4_SIZE_MM

#DATI_DOCUMENTO={'Tipo Documento': {'origin':(0, 53),
#                                   'width':85,
#                                   'height':9,
#                                   'borders':(0,1,0,1),
#                                   'celldata':'get_tipo_documento_fmt'},
#                'Cod.Cliente': {'origin':(85, 53),
#                                   'width':25,
#                                   'height':9,
#                                   'borders':(0,1,0,1),
#                                   'celldata':'get_ID_intestatario_fmt'},
#                }
        
#        (Cella('Codice Fiscale').origin(110, self.HEADER_TOP_HEIGHT).
#         width(47).height(self.ROW_HEIGHT).borders(0,1,0,1).
#         draw(dcm, self._doc.intestatario.get_codice_fiscale()))
#        
#        (Cella('Partita Iva').origin(157, self.HEADER_TOP_HEIGHT).
#         width(33).height(self.ROW_HEIGHT).borders(0,0,0,1).
#         draw(dcm, self._doc.intestatario.get_partita_iva()))
#        dcm.set_offset(0,self.HEADER_TOP_HEIGHT)


#===============================================================================
# Rect
#===============================================================================
class Rect(object):
    
    def __init__(self):
        self._origin = (0, 0)
        self._x = 0
        self._y = 0
        self._width = 1
        self._height = 1
        self._lborder = True
        self._rborder = True
        self._tborder = True
        self._bborder = True
    
    def origin(self, x, y):
        self._origin = (x, y)
        self._x = x
        self._y = y
        return self
    
    def width(self, w):
        self._width = w
        return self
    
    def height(self, h):
        self._height = h
        return self
    
    def borders(self, left_b, right_b, top_b, bottom_b):
        self._lborder = left_b
        self._rborder = right_b
        self._tborder = top_b
        self._bborder = bottom_b
        return self
    
    def draw(self, dcm):
        dcm.set_offset(self._x, self._y)
        if self._tborder:
            dcm.horizzontal_line(0, 0, self._width)
        if self._bborder:
            dcm.horizzontal_line(0, 0 + self._height, self._width)
        if self._lborder:
            dcm.vertical_line(0, 0, self._height)
        if self._rborder:
            dcm.vertical_line(0 + self._width, 0, self._height)


#===============================================================================
# Cell
#===============================================================================
class Cell(Rect):
    TBORDER_TITLE = 1
    LBORDER_TITLE = 1
    TBORDER_DATA = 4
    LBORDER_DATA = 3
    FONT_TITLE = wx.Font(5, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL,
                         wx.FONTWEIGHT_NORMAL, False, 'Courier 10 Pitch')
    FONT_DATA=wx.Font(7, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL,
                      wx.FONTWEIGHT_NORMAL, False, 'Courier 10 Pitch')
    
    def __init__(self,title):
        Rect.__init__(self)
        self._title = title
    
    def draw(self, dcm, data = None):
        Rect.draw(self, dcm)
        dcm.set_font(self.FONT_TITLE)
        dcm.text(self._title, self.LBORDER_TITLE, self.TBORDER_TITLE)
        if data is not None:
            self.draw_data(dcm, data)
    
    def draw_data(self, dcm, data):
        dcm.set_offset(*self._origin)
        dcm.set_font(self.FONT_DATA)
        dcm.text(data, self.LBORDER_DATA, self.TBORDER_DATA)


#===============================================================================
# Table
#===============================================================================
class Table(Rect):
    
    TBORDER_TEXT = 1
    LBORDER_TEXT = 1
    
    def __init__(self, width, height):
        self._cols_width = []
        self._row_height = 0
        self._rows = []
        self._header = []
        self.width(width)
        self.height(height)
    
    def cols_width(self, *args):
        for h in args:
            self._cols_width.append(h)
        return self
    
    def row_height(self, h):
        self._row_height = h
        return self
    
    def header(self, *args):
        for t in args:
            self._header.append(t)
        return self
    
    def row(self,*args):
        self._rows.append(args)
    
    def draw(self,dcm):
        curr_xoffset = 0
        Rect.draw(self, dcm)        
        for i in range(len(self._cols_width)):
            self._draw_header(dcm, i)
            self._draw_col(dcm, i)
            if self._cols_width[i] < 0: continue
            curr_xoffset += self._cols_width[i]
            dcm.set_offset(curr_xoffset, self._y)
            dcm.vertical_line(0, 0, self._height)
    
    def _draw_header(self, dcm, col):
        dcm.text(self._header[col], self.LBORDER_TEXT, self.TBORDER_TEXT)
        if col == 0:
            dcm.horizzontal_line(0, self._row_height, self._width)
    
    def _draw_col(self, dcm, cindex):
        for r in self._rows:
            dcm.move_offset(0, self._row_height)
            dcm.text(r[cindex], self.LBORDER_TEXT, self.TBORDER_TEXT)
        
    
#===============================================================================
# DocumentoCanvas
#===============================================================================
class DocumentoCanvas(PrintableCanvas):
    def __init__(self, doc):
        PrintableCanvas.__init__(self)
        self._doc = doc
        self.FONT_AZIENDA = wx.Font(12, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL,
                            wx.FONTWEIGHT_NORMAL, False, 'Courier 15 Pitch')
        self.FONT_SUB_AZIENDA = wx.Font(7.5, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL,
                            wx.FONTWEIGHT_NORMAL, False, 'Courier 10 Pitch')
        self.FONT_TITOLO_CELLA = wx.Font(5, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL,
                            wx.FONTWEIGHT_NORMAL, False, 'Courier 5 Pitch')
        self.TBORDER_TITOLO_CELLA = 1
        self.LBORDER_TITOLO_CELLA = 1
        self.TBORDER_TESTO_CELLA = 4
        self.LBORDER_TESTO_CELLA = 3
        self.FONT_TESTO=wx.Font(7, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL,
                            wx.FONTWEIGHT_NORMAL, False, 'Courier 7 Pitch')
        self.MARGINX=float(10)
        self.MARGINY=float(10)
        self.ROW_HEIGHT = 9
        self.MEDIUM_ROW_HEIGHT = 7
        self.SMALL_ROW_HEIGHT = 5
        self.MINI_ROW_HEIGHT = 3
        self.LOGO_WIDTH = 90
        self.HEADER_TOP_HEIGHT = 53#logo e intestazione cliente
        self.HEADER_BOTTOM_HEIGHT = self.ROW_HEIGHT*2#dati fattura
        self.HEADER_HEIGHT = self.HEADER_TOP_HEIGHT + self.HEADER_BOTTOM_HEIGHT
        self.FOOTER_HEIGHT = self.ROW_HEIGHT * 7
        self.PAGE_HEIGHT=A4_SIZE_MM[1]
        self.calcola_altezza_corpo()
    
    def set_altezza_piede(self, h):
        self.FOOTER_HEIGHT = h
        self.calcola_altezza_corpo()
    
    def calcola_altezza_corpo(self):
        self.BODY_HEIGHT=self.PAGE_HEIGHT - (self.MARGINX*2 + 
                                        self.HEADER_HEIGHT + 
                                        self.FOOTER_HEIGHT) - 2
        
    def draw(self, dc_manager, page):    
        dc_manager.set_unit('mm')
        dc_manager.set_upper_text_mode()
        dc_manager.set_margins(self.MARGINX, self.MARGINY, self.MARGINX, self.MARGINY)
        dc_manager.begin_drawing()
        self.margini(dc_manager)
        self.testata(dc_manager)
        self.corpo(dc_manager)
        self.piede(dc_manager, page)
        dc_manager.end_drawing()
    
    def margini(self, dcm):
        dcm.rectangle(0, self.HEADER_TOP_HEIGHT,
                      dcm.width_mm, dcm.height_mm - self.HEADER_TOP_HEIGHT)
    
    def testata(self, dcm):
        self._logo(dcm)
        self._intestazione(dcm)
        self._dati_documento(dcm)
    
    def corpo(self, dcm):
        self._titoli_righe_documento(dcm)
    
    def piede(self, dcm, page):
        self._piede_riepilogo(dcm)
        self._piede_info_spedizione(dcm)
        self._piede_annotazioni(dcm, page)
    
    def _logo(self, dcm):
        observer = wx.GetApp().get_observer()
        observer.set_context('AZIENDA')
        azienda = observer.get_dati_azienda()
        
        dcm.set_upper_text_mode(False)
        dcm.set_font(self.FONT_AZIENDA)
        dcm.text(azienda.ragione_sociale)
        dcm.move_offset(0,self.ROW_HEIGHT)
        dcm.horizzontal_line(0, 0, self.LOGO_WIDTH - 2)
        dcm.set_font(self.FONT_SUB_AZIENDA)
        dcm.move_offset(0,self.MINI_ROW_HEIGHT)
        dcm.text(azienda.via)
        dcm.move_offset(0,self.SMALL_ROW_HEIGHT)
        txt='{0} {1} {2}'.format(azienda.cap,
                                 azienda.citta,
                                 azienda.provincia)
        dcm.text(txt)
        dcm.move_offset(0,self.SMALL_ROW_HEIGHT)
        txt = 'Tel. {0}'.format(azienda.telefono)
        dcm.text(txt)
        dcm.move_offset(0,self.SMALL_ROW_HEIGHT)
        txt = 'e-mail: {0}'.format(azienda.email)
        dcm.text(txt)        
        dcm.set_upper_text_mode()

    def _intestazione(self, dcm):
        '''Disegna il rettangolo dell'inestatario fattura: dati cliente e destinazione.'''
        dcm.set_offset(self.LOGO_WIDTH, 0)
        r_width, r_height = dcm.width_mm - self.LOGO_WIDTH, self.HEADER_TOP_HEIGHT - 1
        dcm.rectangle(0, 0, r_width, r_height, 5)        
        
        self._draw_intestatario(dcm)
        self._draw_destinazione(dcm)
    
    def _draw_intestatario(self, dcm):
        dcm.set_font(self.FONT_TITOLO_CELLA)
        dcm.text('Spettabile', 1, self.TBORDER_TITOLO_CELLA)

        #dati intestatario
        dcm.set_font(self.FONT_TESTO)
        dcm.text(self._doc.intestatario.ragione_sociale, self.LBORDER_TESTO_CELLA,
                                                        self.TBORDER_TESTO_CELLA)
        dcm.move_offset(0,self.SMALL_ROW_HEIGHT)
        dcm.text(self._doc.intestatario.via, self.LBORDER_TESTO_CELLA,
                                             self.TBORDER_TESTO_CELLA)
        
        dcm.move_offset(0,self.SMALL_ROW_HEIGHT)
        txt='{0} {1} {2}'.format(self._doc.intestatario.cap,
                                 self._doc.intestatario.citta,
                                 self._doc.intestatario.provincia)
        dcm.text(txt, self.LBORDER_TESTO_CELLA, self.TBORDER_TESTO_CELLA)
    
    def _draw_destinazione(self,dcm):
        dcm.set_offset(self.LOGO_WIDTH, 0)
        dcm.horizzontal_line(1, self.HEADER_TOP_HEIGHT/2, dcm.width_mm - self.LOGO_WIDTH - 2)
        dcm.text('Destinazione', 1, self.TBORDER_TITOLO_CELLA + self.HEADER_TOP_HEIGHT/2)

    def _dati_documento(self, dcm):
#        for titolo, dati in DATI_DOCUMENTO.iteritems():
#            (Cella(titolo).origin(*dati['origin']).
#             width(dati['width']).height(dati['height']).
#             borders(*dati['borders']).
#             draw(dcm, getattr(self._doc, dati['celldata'])()))
            
        (Cell('Tipo Documento').origin(0, self.HEADER_TOP_HEIGHT).
         width(85).height(self.ROW_HEIGHT).borders(0,1,0,1).
         draw(dcm, self._doc.get_tipo_documento_fmt()))
        
        (Cell('Cod.Cliente').origin(85, self.HEADER_TOP_HEIGHT).
         width(25).height(self.ROW_HEIGHT).borders(0,1,0,1).
        draw(dcm, self._doc.intestatario.get_ID_fmt()))
        
        (Cell('Codice Fiscale').origin(110, self.HEADER_TOP_HEIGHT).
         width(47).height(self.ROW_HEIGHT).borders(0,1,0,1).
         draw(dcm, self._doc.intestatario.get_codice_fiscale()))
        
        (Cell('Partita Iva').origin(157, self.HEADER_TOP_HEIGHT).
         width(33).height(self.ROW_HEIGHT).borders(0,0,0,1).
         draw(dcm, self._doc.intestatario.get_partita_iva()))
        
        (Cell('Numero').origin(0, self.HEADER_TOP_HEIGHT + self.ROW_HEIGHT).
         width(50).height(self.ROW_HEIGHT).borders(0,1,0,1).
         draw(dcm, self._doc.get_numero_documento_fmt()))
        
        (Cell('Data Documento').origin(50, self.HEADER_TOP_HEIGHT + self.ROW_HEIGHT).
         width(40).height(self.ROW_HEIGHT).borders(0,1,0,1).
         draw(dcm, self._doc.get_data_documento_fmt()))
        
        (Cell('Pagamento').origin(90, self.HEADER_TOP_HEIGHT + self.ROW_HEIGHT).
         width(100).height(self.ROW_HEIGHT).borders(0,0,0,1).
         draw(dcm, self._doc.get_pagamento_fmt()))
        
#        dcm.set_offset(0,self.HEADER_TOP_HEIGHT) 
#        dcm.horizzontal_line(0, self.ROW_HEIGHT, dcm.width_mm)
#        dcm.vertical_line(85, 0, self.ROW_HEIGHT)
#        dcm.vertical_line(110, 0, self.ROW_HEIGHT)
#        dcm.vertical_line(157, 0, self.ROW_HEIGHT)#verticale
#        dcm.set_font(self.FONT_TITOLO_CELLA)
#        dcm.text('Tipo Documento', 1, self.TBORDER_TITOLO_CELLA)
#        dcm.text('Cod.Cliente', 86, self.TBORDER_TITOLO_CELLA)
#        dcm.text('Codice Fiscale', 111, self.TBORDER_TITOLO_CELLA)
#        dcm.text('Parita IVA', 158, self.TBORDER_TITOLO_CELLA)
#        dcm.set_font(self.FONT_TESTO)
#        dcm.text(tipo_doc, 3, 4)
#        dcm.text('CRRNNL81A25d643J', 113, 4)
#        dcm.text('12345678909', 161, 4)
        
#        dcm.horizzontal_line(0, self.ROW_HEIGHT*2, dcm.width_mm)
#        dcm.vertical_line(50, self.ROW_HEIGHT, self.ROW_HEIGHT)
#        dcm.vertical_line(90, self.ROW_HEIGHT, self.ROW_HEIGHT)#verticale
#        dcm.set_font(self.FONT_TITOLO_CELLA)
#        dcm.text('Numero',1,self.TBORDER_TITOLO_CELLA + self.ROW_HEIGHT)
#        dcm.text('Data Documento', 51, self.TBORDER_TITOLO_CELLA + self.ROW_HEIGHT)
#        dcm.text('Pagamento', 91, self.TBORDER_TITOLO_CELLA + self.ROW_HEIGHT)
    #corpo
    def _titoli_righe_documento(self, dcm):        
        corpo = (Table(dcm.width_mm,self.BODY_HEIGHT).
                 borders(0, 0, 0, 1).origin(0, self.HEADER_HEIGHT).
                 cols_width(18, 90, 12, 20, 20, 20, -10).
                 header('Cod.Prod.', 'Descrizione Prodotto', 'Qta', 
                        'Prezzo Un.', 'Sconti', 'Totale', 'IVA').
                 row_height(self.SMALL_ROW_HEIGHT))
        for r in self._doc.dettaglio:
            corpo.row(r.get_ID_prodotto_fmt(),
                      r.get_descrizione(),
                      r.get_quantita(),
                      r.get_prezzo_fmt().strip('€'),
                      r.get_sconti(),
                      r.get_totale_fmt().strip('€'),
                      r.get_codice_iva_riga())
        corpo.draw(dcm)
#        (Cell('Cod.Prod.').origin(0, self.HEADER_HEIGHT).
#         width(18).height(self.SMALL_ROW_HEIGHT).borders(0,0,0,1).
#         draw(dcm))
#        
#        (Cell('Descrizione Prodotto').origin(18, self.HEADER_HEIGHT).
#         width(90).height(self.SMALL_ROW_HEIGHT).borders(0,0,0,1).
#         draw(dcm))
#        
#        (Cell('Qta').origin(108, self.HEADER_HEIGHT).
#         width(90).height(self.SMALL_ROW_HEIGHT).borders(0,0,0,1).
#         draw(dcm))
        
#        dcm.set_offset(0,self.HEADER_HEIGHT)
##        dcm.horizzontal_line(0, self.SMALL_ROW_HEIGHT, dcm.width_mm)
##        
##        dcm.text('Cod.Prod')
##        dcm.move_offset(18,0)
##        dcm.vertical_line(0, 0, self.BODY_HEIGHT)#codice prodotto
##        
##        dcm.text('Descrizione Prodotto',)
##        dcm.move_offset(90,0)
##        dcm.vertical_line(0, 0, self.BODY_HEIGHT)#descrizione prod
##        
##        dcm.text('Qta')
##        dcm.move_offset(12,0)
##        dcm.vertical_line(0, 0, self.BODY_HEIGHT)#quantita'
#        
#        dcm.text('Prezzo Un.')
#        dcm.move_offset(20,0)
#        dcm.vertical_line(0, 0, self.BODY_HEIGHT)#prezzo
#        
#        dcm.text('Sconti')
#        dcm.move_offset(20,0)
#        dcm.vertical_line(0, 0, self.BODY_HEIGHT)#sconti
#        
#        dcm.text('Totale')
#        dcm.move_offset(20,0)
#        dcm.vertical_line(0, 0, self.BODY_HEIGHT)#totale
#        
#        dcm.text('IVA')
        #dcm.move_offset(10,0)
        #dcm.vertical_line(0, 0, self.BODY_HEIGHT)#iva:non serve la linea verticale
    
    def _piede_riepilogo(self, dcm):
        ROW_SPAN=3
        
        riepilogo_aliquote = self._doc.get_riepilogo_aliquote()
        
        dcm.set_offset(0,self.HEADER_HEIGHT + self.BODY_HEIGHT)
        dcm.horizzontal_line(0, 0, dcm.width_mm)
        dcm.set_font(self.FONT_TITOLO_CELLA)
        dcm.text('C.IVA')
        dcm.set_font(self.FONT_TESTO)
        dcm.save_offset()
        for k, v  in riepilogo_aliquote.iteritems():
            dcm.text(k, self.LBORDER_TESTO_CELLA, self.TBORDER_TESTO_CELLA)
            dcm.move_offset(0, self.MINI_ROW_HEIGHT)
        dcm.restore_offset()
        dcm.move_offset(18,0)
        dcm.vertical_line(0, 0, self.ROW_HEIGHT*ROW_SPAN)
        
        dcm.set_font(self.FONT_TITOLO_CELLA)
        dcm.text('Descrizione IVA')
        dcm.set_font(self.FONT_TESTO)
        dcm.save_offset()
        for k, v  in riepilogo_aliquote.iteritems():
            dcm.text(v[1].get_descrizione(), self.LBORDER_TESTO_CELLA, self.TBORDER_TESTO_CELLA)
            dcm.move_offset(0, self.MINI_ROW_HEIGHT)
        dcm.restore_offset()
        dcm.move_offset(85,0)
        dcm.vertical_line(0, 0, self.ROW_HEIGHT*ROW_SPAN)
        
        dcm.set_font(self.FONT_TITOLO_CELLA)
        dcm.text('Imponibile')
        dcm.set_font(self.FONT_TESTO)
        dcm.save_offset()
        for k, v  in riepilogo_aliquote.iteritems():
            dcm.text(str(v[0]).strip('€'), self.LBORDER_TESTO_CELLA, self.TBORDER_TESTO_CELLA)
            dcm.move_offset(0, self.MINI_ROW_HEIGHT)
        dcm.restore_offset()
        dcm.move_offset(26,0)
        dcm.vertical_line(0, 0, self.ROW_HEIGHT*ROW_SPAN)
        
        dcm.set_font(self.FONT_TITOLO_CELLA)
        dcm.text('Imposta')
        dcm.set_font(self.FONT_TESTO)
        dcm.save_offset()
        for k, v  in riepilogo_aliquote.iteritems():
            dcm.text(str(v[1].get_imposta(v[0])).strip('€'), self.LBORDER_TESTO_CELLA, self.TBORDER_TESTO_CELLA)
            dcm.move_offset(0, self.MINI_ROW_HEIGHT)
        dcm.restore_offset()
        dcm.move_offset(26,0)
        dcm.vertical_line(0, 0, self.ROW_HEIGHT*ROW_SPAN)
        
        dcm.set_font(self.FONT_TITOLO_CELLA)
        dcm.text('Totale imponibile')
        dcm.set_font(self.FONT_TESTO)
        dcm.text(self._doc.get_totale_imponibile_fmt().strip('€'), 
                 self.LBORDER_TESTO_CELLA, self.TBORDER_TESTO_CELLA)
        dcm.move_offset(0,self.ROW_HEIGHT)        
        dcm.horizzontal_line(0, 0, dcm.FILL)
        
        dcm.set_font(self.FONT_TITOLO_CELLA)
        dcm.text('Totale imposta')
        dcm.set_font(self.FONT_TESTO)
        dcm.text(self._doc.get_totale_iva_fmt().strip('€'), 
                 self.LBORDER_TESTO_CELLA, self.TBORDER_TESTO_CELLA)
        dcm.move_offset(0,self.ROW_HEIGHT)
        dcm.horizzontal_line(0, 0, dcm.FILL)
        
        dcm.set_font(self.FONT_TITOLO_CELLA)
        dcm.text('Totale documento')        
        dcm.set_font(self.FONT_TESTO)
        dcm.text(self._doc.get_totale_fmt().strip('€'), 
                 self.LBORDER_TESTO_CELLA, self.TBORDER_TESTO_CELLA)
        dcm.move_offset(dcm.ORIGIN,self.ROW_HEIGHT)
        dcm.horizzontal_line(0, 0, dcm.width_mm)
    
    def _piede_info_spedizione(self, dcm):
        
        dcm.text('Porto')
#        dcm.set_font(self.FONT_TESTO)
#        dcm.text('Assegnato',self.LBORDER_TESTO_CELLA,self.TBORDER_TESTO_CELLA)        
        dcm.move_offset(35, 0)
        
        dcm.set_font(self.FONT_TITOLO_CELLA)
        dcm.text('Trasporto a cura del')
#        dcm.set_font(self.FONT_TESTO)
#        dcm.text('Destinatario',self.LBORDER_TESTO_CELLA,self.TBORDER_TESTO_CELLA)
        dcm.move_offset(40, 0)
        
        dcm.set_font(self.FONT_TITOLO_CELLA)
        dcm.text('Causale trasporto')
#        dcm.set_font(self.FONT_TESTO)
#        dcm.text('CONTO DEPOSITO',self.LBORDER_TESTO_CELLA,self.TBORDER_TESTO_CELLA)
        dcm.move_offset(40, 0)
        
        dcm.set_font(self.FONT_TITOLO_CELLA)
        dcm.text('N.Colli')
#        dcm.set_font(self.FONT_TESTO)
#        dcm.text('1000',self.LBORDER_TESTO_CELLA,self.TBORDER_TESTO_CELLA)
        dcm.move_offset(20, 0)
        
        dcm.set_font(self.FONT_TITOLO_CELLA)
        dcm.text('Aspetto esteriore beni')
#        dcm.set_font(self.FONT_TESTO)
#        dcm.text('Imballaggio totale',self.LBORDER_TESTO_CELLA,self.TBORDER_TESTO_CELLA)
        
        dcm.move_offset(dcm.ORIGIN,self.ROW_HEIGHT)
        dcm.horizzontal_line(0, 0, dcm.width_mm)
        
        dcm.set_font(self.FONT_TITOLO_CELLA)
        dcm.text('Vettore')
#        dcm.set_font(self.FONT_TESTO)
#        dcm.text('T28 - TNT GLOBAL EXPRESS',self.LBORDER_TESTO_CELLA,self.TBORDER_TESTO_CELLA)
#        dcm.text('P.Iva 12345678912',self.LBORDER_TESTO_CELLA+80,self.TBORDER_TESTO_CELLA)
        dcm.move_offset(0, 3.5)
#        dcm.text('VIA A. SPINELLI 123',self.LBORDER_TESTO_CELLA,self.TBORDER_TESTO_CELLA)
#        dcm.text('Albo Autotr. RE2154SD87',self.LBORDER_TESTO_CELLA+80,self.TBORDER_TESTO_CELLA)
        dcm.move_offset(0, 3.5)
#        dcm.text('PESCHIERA BORROMEO 20068 MI',self.LBORDER_TESTO_CELLA,self.TBORDER_TESTO_CELLA)
        
        dcm.move_offset(145, -7)
        dcm.vertical_line(0, 0, self.ROW_HEIGHT*2)
        dcm.set_font(self.FONT_TITOLO_CELLA)
        dcm.text('Firma Vettore')
        
        dcm.move_offset(0, 9)
        dcm.horizzontal_line(0, 0, dcm.FILL)        
        dcm.text('Data/Ora ritiro')
#        dcm.set_font(self.FONT_TESTO)
#        dcm.text('27/06/11 16:50:00',self.LBORDER_TESTO_CELLA,self.TBORDER_TESTO_CELLA)
        
        dcm.move_offset(dcm.ORIGIN,self.ROW_HEIGHT)
        dcm.horizzontal_line(0, 0, dcm.width_mm)
        
        dcm.set_font(self.FONT_TITOLO_CELLA)
        dcm.move_offset(119, 0)
        dcm.vertical_line(0, 0, dcm.FILL)
        dcm.text('Firma conducente')
        dcm.move_offset(30, 0)
        dcm.vertical_line(0, 0, dcm.FILL)
        dcm.text('Firma Destinatario')
        dcm.move_offset(dcm.ORIGIN,0)        
    
    def _piede_annotazioni(self, dcm, page):
        dcm.set_font(self.FONT_TITOLO_CELLA)
        dcm.text('Annotazioni')
        dcm.move_offset(179,0)
        dcm.vertical_line(0, 0, dcm.FILL)
        dcm.text('Pagina')
        dcm.set_font(self.FONT_TESTO)
        dcm.text(str(page),self.LBORDER_TESTO_CELLA, self.TBORDER_TESTO_CELLA)
    
    def get_total_pages(self):
        return 1


#===============================================================================
# PreventivoCanvas
#===============================================================================
class PreventivoCanvas(DocumentoCanvas):
    def __init__(self, doc):
        DocumentoCanvas.__init__(self, doc)
        self.set_altezza_piede(36)
    
    def _draw_destinazione(self,dcm):
        pass

    def _piede_info_spedizione(self, dcm):
        pass
            